{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pandas import Series, DataFrame, MultiIndex\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 多级索引\n",
    "\n",
    "MultiIndex(多级索引)对象和标准的Index(索引)对象相似，用来储存轴标签。可以把MultiIndex想象成由元组构成的数组。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "arrays = [\n",
    "    ['bar', 'bar', 'bar', 'foo', 'foo'],\n",
    "    ['one', 'two', 'one', 'two', 'one', 'two']\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "tuples = list(zip(*arrays))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('bar', 'one'),\n",
       " ('bar', 'two'),\n",
       " ('bar', 'one'),\n",
       " ('foo', 'two'),\n",
       " ('foo', 'one')]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tuples"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# TODO index = MultiIndex(level)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "也可以使用数组列表或者可迭代的对象构建多级索引对象。索引对象可以施加到任意一个轴上，层数可以任意增加。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# df = pd.DataFrame(np.random.randn(4, 5), \n",
    "#                 index=['a', 'b', 'c', 'd'],\n",
    "#                 columns=[['bar', 'foo'],['one', 'two']])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 8 读/写数据 \n",
    "\n",
    "- read_csv()\n",
    "- read_table()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_csv(\"./eg1.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "pandas.core.frame.DataFrame"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1</th>\n",
       "      <th>1.1</th>\n",
       "      <th>True</th>\n",
       "      <th>北京</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2.2</td>\n",
       "      <td>True</td>\n",
       "      <td>上海</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>3.3</td>\n",
       "      <td>False</td>\n",
       "      <td>杭州</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>4.4</td>\n",
       "      <td>False</td>\n",
       "      <td>成都</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   1  1.1   True  北京\n",
       "0  2  2.2   True  上海\n",
       "1  3  3.3  False  杭州\n",
       "2  4  4.4  False  成都"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "df2 = pd.read_table('./eg1.csv', sep=\",\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1</th>\n",
       "      <th>1.1</th>\n",
       "      <th>True</th>\n",
       "      <th>北京</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2.2</td>\n",
       "      <td>True</td>\n",
       "      <td>上海</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>3.3</td>\n",
       "      <td>False</td>\n",
       "      <td>杭州</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>4.4</td>\n",
       "      <td>False</td>\n",
       "      <td>成都</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   1  1.1   True  北京\n",
       "0  2  2.2   True  上海\n",
       "1  3  3.3  False  杭州\n",
       "2  4  4.4  False  成都"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上面两个函数都会把第一行数据作为head, pandas默认使用整数作为头。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "df3 = pd.read_table('./eg1.csv', sep=\",\", header=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.1</td>\n",
       "      <td>True</td>\n",
       "      <td>北京</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2.2</td>\n",
       "      <td>True</td>\n",
       "      <td>上海</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>3.3</td>\n",
       "      <td>False</td>\n",
       "      <td>杭州</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>4.4</td>\n",
       "      <td>False</td>\n",
       "      <td>成都</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   0    1      2    3\n",
       "0  1  1.1   True   北京\n",
       "1  2  2.2   True   上海\n",
       "2  3  3.3  False   杭州\n",
       "3  4  4.4  False   成都"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "df4 = pd.read_table('./eg1.csv', sep=\",\", names=['a', 'b', 'c', 'd'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.1</td>\n",
       "      <td>True</td>\n",
       "      <td>北京</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2.2</td>\n",
       "      <td>True</td>\n",
       "      <td>上海</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>3.3</td>\n",
       "      <td>False</td>\n",
       "      <td>杭州</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>4.4</td>\n",
       "      <td>False</td>\n",
       "      <td>成都</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   a    b      c    d\n",
       "0  1  1.1   True   北京\n",
       "1  2  2.2   True   上海\n",
       "2  3  3.3  False   杭州\n",
       "3  4  4.4  False   成都"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1,1.1,True,\" 北京\"\r\n",
      "2,2.2,True,\"上海\"\r\n",
      "3,3.3,False,\"杭州\"\r\n",
      "4,4.4,False,\"成都\""
     ]
    }
   ],
   "source": [
    "!cat eg1.csv"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 9 组合数据\n",
    "\n",
    "cancat()函数，它可以用来连接或者堆叠数据，可以用来处理数据集合的交集或者并集。\n",
    "append()函数可以再0轴上对数据进行组合。\n",
    "merge(on=, how=)提供了和数据库风格一致的高性能数据组合方式。内连接(inner)、左连接(left)、右连接(right)、外连接(outer)。\n",
    "  - 一对一\n",
    "  - 一对多\n",
    "  - 多对多\n",
    "\n",
    "数组对象的方法combine_first()可以把两个数据对象的公共部分合并起来。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`pandas.concat([df1, df2, df3])` ，如何合并不同列，则会被nan填充。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0.431659</td>\n",
       "      <td>0.571078</td>\n",
       "      <td>0.370573</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0.083074</td>\n",
       "      <td>0.194014</td>\n",
       "      <td>0.612408</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2\n",
       "0  0.431659  0.571078  0.370573\n",
       "1  0.083074  0.194014  0.612408"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1 = pd.DataFrame(np.random.rand(2, 3))\n",
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0.476528</td>\n",
       "      <td>0.079197</td>\n",
       "      <td>0.659270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0.129186</td>\n",
       "      <td>0.624711</td>\n",
       "      <td>0.098727</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2\n",
       "0  0.476528  0.079197  0.659270\n",
       "1  0.129186  0.624711  0.098727"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2 = pd.DataFrame(np.random.rand(2, 3))\n",
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0.431659</td>\n",
       "      <td>0.571078</td>\n",
       "      <td>0.370573</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0.083074</td>\n",
       "      <td>0.194014</td>\n",
       "      <td>0.612408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0.476528</td>\n",
       "      <td>0.079197</td>\n",
       "      <td>0.659270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0.129186</td>\n",
       "      <td>0.624711</td>\n",
       "      <td>0.098727</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2\n",
       "0  0.431659  0.571078  0.370573\n",
       "1  0.083074  0.194014  0.612408\n",
       "0  0.476528  0.079197  0.659270\n",
       "1  0.129186  0.624711  0.098727"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.concat([df1, df2])\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 10 数据分组操作\n",
    "\n",
    "分组分为三部分：\n",
    "  - 分割。根据某个原则吧数据分割成几个部分。\n",
    "  - 应用。针对每组的数据执行不同的操作。\n",
    "  - 组合。把每组得到的结果组合起来。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "arrays = [\n",
    "    ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],\n",
    "    ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three']\n",
    "]\n",
    "tuples = list(zip(*arrays))\n",
    "a = np.array(tuples)\n",
    "b = np.random.randn(8, 2)\n",
    "df = pd.DataFrame(np.hstack((a, b)), columns=['A', 'B', 'C', 'D'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>foo</td>\n",
       "      <td>one</td>\n",
       "      <td>-1.5265571027276756</td>\n",
       "      <td>-1.2132222225224143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>bar</td>\n",
       "      <td>one</td>\n",
       "      <td>0.4561940820458355</td>\n",
       "      <td>-1.1872823119884173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>foo</td>\n",
       "      <td>two</td>\n",
       "      <td>0.4657117204429266</td>\n",
       "      <td>-0.8076928681592089</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>bar</td>\n",
       "      <td>three</td>\n",
       "      <td>-0.9201492543626099</td>\n",
       "      <td>1.19891340412549</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>foo</td>\n",
       "      <td>two</td>\n",
       "      <td>-1.4279735376055218</td>\n",
       "      <td>0.931539470379203</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>bar</td>\n",
       "      <td>two</td>\n",
       "      <td>-0.17040416514771164</td>\n",
       "      <td>1.527247429452815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>foo</td>\n",
       "      <td>one</td>\n",
       "      <td>0.8658093078555235</td>\n",
       "      <td>0.7219865075751241</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>foo</td>\n",
       "      <td>three</td>\n",
       "      <td>0.2529825172315345</td>\n",
       "      <td>0.36502770490795966</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     A      B                     C                    D\n",
       "0  foo    one   -1.5265571027276756  -1.2132222225224143\n",
       "1  bar    one    0.4561940820458355  -1.1872823119884173\n",
       "2  foo    two    0.4657117204429266  -0.8076928681592089\n",
       "3  bar  three   -0.9201492543626099     1.19891340412549\n",
       "4  foo    two   -1.4279735376055218    0.931539470379203\n",
       "5  bar    two  -0.17040416514771164    1.527247429452815\n",
       "6  foo    one    0.8658093078555235   0.7219865075751241\n",
       "7  foo  three    0.2529825172315345  0.36502770490795966"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "grouped = df.groupby(['A', 'B'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">bar</td>\n",
       "      <td>one</td>\n",
       "      <td>0.4561940820458355</td>\n",
       "      <td>-1.1872823119884173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>three</td>\n",
       "      <td>-0.9201492543626099</td>\n",
       "      <td>1.19891340412549</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>two</td>\n",
       "      <td>-0.17040416514771164</td>\n",
       "      <td>1.527247429452815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">foo</td>\n",
       "      <td>one</td>\n",
       "      <td>-1.52655710272767560.8658093078555235</td>\n",
       "      <td>-1.21322222252241430.7219865075751241</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>three</td>\n",
       "      <td>0.2529825172315345</td>\n",
       "      <td>0.36502770490795966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>two</td>\n",
       "      <td>0.4657117204429266-1.4279735376055218</td>\n",
       "      <td>-0.80769286815920890.931539470379203</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                               C  \\\n",
       "A   B                                              \n",
       "bar one                       0.4561940820458355   \n",
       "    three                    -0.9201492543626099   \n",
       "    two                     -0.17040416514771164   \n",
       "foo one    -1.52655710272767560.8658093078555235   \n",
       "    three                     0.2529825172315345   \n",
       "    two    0.4657117204429266-1.4279735376055218   \n",
       "\n",
       "                                               D  \n",
       "A   B                                             \n",
       "bar one                      -1.1872823119884173  \n",
       "    three                       1.19891340412549  \n",
       "    two                        1.527247429452815  \n",
       "foo one    -1.21322222252241430.7219865075751241  \n",
       "    three                    0.36502770490795966  \n",
       "    two     -0.80769286815920890.931539470379203  "
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "name1 = np.array(['a', 'a', 'a', 'b', 'b', 'b', 'd', 'd'])\n",
    "name2 = np.array(['aa', 'aa', 'ab', 'bb', 'ba', 'bd', 'dd', 'da'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "grouped = df.groupby([name1, name2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td rowspan=\"2\" valign=\"top\">a</td>\n",
       "      <td>aa</td>\n",
       "      <td>foobar</td>\n",
       "      <td>oneone</td>\n",
       "      <td>-1.52655710272767560.4561940820458355</td>\n",
       "      <td>-1.2132222225224143-1.1872823119884173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>ab</td>\n",
       "      <td>foo</td>\n",
       "      <td>two</td>\n",
       "      <td>0.4657117204429266</td>\n",
       "      <td>-0.8076928681592089</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"3\" valign=\"top\">b</td>\n",
       "      <td>ba</td>\n",
       "      <td>foo</td>\n",
       "      <td>two</td>\n",
       "      <td>-1.4279735376055218</td>\n",
       "      <td>0.931539470379203</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>bb</td>\n",
       "      <td>bar</td>\n",
       "      <td>three</td>\n",
       "      <td>-0.9201492543626099</td>\n",
       "      <td>1.19891340412549</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>bd</td>\n",
       "      <td>bar</td>\n",
       "      <td>two</td>\n",
       "      <td>-0.17040416514771164</td>\n",
       "      <td>1.527247429452815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td rowspan=\"2\" valign=\"top\">d</td>\n",
       "      <td>da</td>\n",
       "      <td>foo</td>\n",
       "      <td>three</td>\n",
       "      <td>0.2529825172315345</td>\n",
       "      <td>0.36502770490795966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>dd</td>\n",
       "      <td>foo</td>\n",
       "      <td>one</td>\n",
       "      <td>0.8658093078555235</td>\n",
       "      <td>0.7219865075751241</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           A       B                                      C  \\\n",
       "a aa  foobar  oneone  -1.52655710272767560.4561940820458355   \n",
       "  ab     foo     two                     0.4657117204429266   \n",
       "b ba     foo     two                    -1.4279735376055218   \n",
       "  bb     bar   three                    -0.9201492543626099   \n",
       "  bd     bar     two                   -0.17040416514771164   \n",
       "d da     foo   three                     0.2529825172315345   \n",
       "  dd     foo     one                     0.8658093078555235   \n",
       "\n",
       "                                           D  \n",
       "a aa  -1.2132222225224143-1.1872823119884173  \n",
       "  ab                     -0.8076928681592089  \n",
       "b ba                       0.931539470379203  \n",
       "  bb                        1.19891340412549  \n",
       "  bd                       1.527247429452815  \n",
       "d da                     0.36502770490795966  \n",
       "  dd                      0.7219865075751241  "
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped.sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以对某一列或者某几列进行数据分组。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A\n",
       "bar    3\n",
       "foo    5\n",
       "Name: C, dtype: int64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['C'].groupby(df['A']).count()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 11 时间序列\n",
    "\n",
    "pandas是一个重要的时间序列分析工具，特别是在金融分析领域。通过测量某个量与时间的变化关系，可以得到一个时间序列。许多时间序列的频率是固定的，意思就是各个点之间的时间间隔是相同的。当然，也会遇到时间间隔不一样的时间序列。\n",
    "\n",
    "\n",
    "## 11.1 时间序列介绍\n",
    "\n",
    "最基本的时间序列(以时间点作为索引)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = Series(np.random.randn(10), index=pd.date_range('2013-1-1', periods=10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-01-01   -0.224279\n",
       "2013-01-02    0.561802\n",
       "2013-01-03   -1.384867\n",
       "2013-01-04    0.417163\n",
       "2013-01-05    1.444660\n",
       "2013-01-06    0.511436\n",
       "2013-01-07    0.096619\n",
       "2013-01-08   -0.393036\n",
       "2013-01-09   -0.681412\n",
       "2013-01-10   -1.804821\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以使用resample()函数把不同时间间隔的序列转换成等时间间隔的序列。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-01-01   -1.047343\n",
       "2013-01-04    2.373260\n",
       "2013-01-07   -0.977829\n",
       "2013-01-10   -1.804821\n",
       "Freq: 3D, dtype: float64"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('3D').sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "index = pd.date_range('2013-1-1', '2013-1-30', freq='2D')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2013-01-01', '2013-01-03', '2013-01-05', '2013-01-07',\n",
       "               '2013-01-09', '2013-01-11', '2013-01-13', '2013-01-15',\n",
       "               '2013-01-17', '2013-01-19', '2013-01-21', '2013-01-23',\n",
       "               '2013-01-25', '2013-01-27', '2013-01-29'],\n",
       "              dtype='datetime64[ns]', freq='2D')"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "时间间隔对象'D'表示天，'WOM'表示某个月的某一周。 每个月的第二周的星期三最为时间序列的索引对象。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "index = pd.date_range('2013-1-1', '2013-9-30', freq='WOM-2WED')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2013-01-09', '2013-02-13', '2013-03-13', '2013-04-10',\n",
       "               '2013-05-08', '2013-06-12', '2013-07-10', '2013-08-14',\n",
       "               '2013-09-11'],\n",
       "              dtype='datetime64[ns]', freq='WOM-2WED')"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "p = pd.Period(2013, freq='A-Nov')  # Period 默认的时间范围是天"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2013', 'A-NOV')"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['2013-01-04', '2013-01-05', '2013-01-06', '2013-01-07',\n",
       "             '2013-01-08', '2013-01-09', '2013-01-10', '2013-01-11',\n",
       "             '2013-01-12', '2013-01-13',\n",
       "             ...\n",
       "             '2013-11-25', '2013-11-26', '2013-11-27', '2013-11-28',\n",
       "             '2013-11-29', '2013-11-30', '2013-12-01', '2013-12-02',\n",
       "             '2013-12-03', '2013-12-04'],\n",
       "            dtype='period[D]', length=335, freq='D')"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.period_range('2013-1-4', '2013-12-4')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 11.2 时间序列作图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>No</th>\n",
       "      <th>year</th>\n",
       "      <th>month</th>\n",
       "      <th>day</th>\n",
       "      <th>hour</th>\n",
       "      <th>pm2.5</th>\n",
       "      <th>DEWP</th>\n",
       "      <th>TEMP</th>\n",
       "      <th>PRES</th>\n",
       "      <th>cbwd</th>\n",
       "      <th>Iws</th>\n",
       "      <th>Is</th>\n",
       "      <th>Ir</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2010</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-21</td>\n",
       "      <td>-11.0</td>\n",
       "      <td>1021.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>1.79</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2010</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-21</td>\n",
       "      <td>-12.0</td>\n",
       "      <td>1020.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>4.92</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>2010</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-21</td>\n",
       "      <td>-11.0</td>\n",
       "      <td>1019.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>6.71</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>2010</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-21</td>\n",
       "      <td>-14.0</td>\n",
       "      <td>1019.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>9.84</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-20</td>\n",
       "      <td>-12.0</td>\n",
       "      <td>1018.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>12.97</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43819</td>\n",
       "      <td>43820</td>\n",
       "      <td>2014</td>\n",
       "      <td>12</td>\n",
       "      <td>31</td>\n",
       "      <td>19</td>\n",
       "      <td>8.0</td>\n",
       "      <td>-23</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>231.97</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43820</td>\n",
       "      <td>43821</td>\n",
       "      <td>2014</td>\n",
       "      <td>12</td>\n",
       "      <td>31</td>\n",
       "      <td>20</td>\n",
       "      <td>10.0</td>\n",
       "      <td>-22</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>237.78</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43821</td>\n",
       "      <td>43822</td>\n",
       "      <td>2014</td>\n",
       "      <td>12</td>\n",
       "      <td>31</td>\n",
       "      <td>21</td>\n",
       "      <td>10.0</td>\n",
       "      <td>-22</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>242.70</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43822</td>\n",
       "      <td>43823</td>\n",
       "      <td>2014</td>\n",
       "      <td>12</td>\n",
       "      <td>31</td>\n",
       "      <td>22</td>\n",
       "      <td>8.0</td>\n",
       "      <td>-22</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>246.72</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>43823</td>\n",
       "      <td>43824</td>\n",
       "      <td>2014</td>\n",
       "      <td>12</td>\n",
       "      <td>31</td>\n",
       "      <td>23</td>\n",
       "      <td>12.0</td>\n",
       "      <td>-21</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>249.85</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>43824 rows × 13 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          No  year  month  day  hour  pm2.5  DEWP  TEMP    PRES cbwd     Iws  \\\n",
       "0          1  2010      1    1     0    NaN   -21 -11.0  1021.0   NW    1.79   \n",
       "1          2  2010      1    1     1    NaN   -21 -12.0  1020.0   NW    4.92   \n",
       "2          3  2010      1    1     2    NaN   -21 -11.0  1019.0   NW    6.71   \n",
       "3          4  2010      1    1     3    NaN   -21 -14.0  1019.0   NW    9.84   \n",
       "4          5  2010      1    1     4    NaN   -20 -12.0  1018.0   NW   12.97   \n",
       "...      ...   ...    ...  ...   ...    ...   ...   ...     ...  ...     ...   \n",
       "43819  43820  2014     12   31    19    8.0   -23  -2.0  1034.0   NW  231.97   \n",
       "43820  43821  2014     12   31    20   10.0   -22  -3.0  1034.0   NW  237.78   \n",
       "43821  43822  2014     12   31    21   10.0   -22  -3.0  1034.0   NW  242.70   \n",
       "43822  43823  2014     12   31    22    8.0   -22  -4.0  1034.0   NW  246.72   \n",
       "43823  43824  2014     12   31    23   12.0   -21  -3.0  1034.0   NW  249.85   \n",
       "\n",
       "       Is  Ir  \n",
       "0       0   0  \n",
       "1       0   0  \n",
       "2       0   0  \n",
       "3       0   0  \n",
       "4       0   0  \n",
       "...    ..  ..  \n",
       "43819   0   0  \n",
       "43820   0   0  \n",
       "43821   0   0  \n",
       "43822   0   0  \n",
       "43823   0   0  \n",
       "\n",
       "[43824 rows x 13 columns]"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_csv('PRSA_data_2010.1.1-2014.12.31.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "# %run process_bj_air_data.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv('./data.csv', parse_dates=True, index_col=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>hour</th>\n",
       "      <th>pm2.5</th>\n",
       "      <th>DEWP</th>\n",
       "      <th>TEMP</th>\n",
       "      <th>PRES</th>\n",
       "      <th>cbwd</th>\n",
       "      <th>Iws</th>\n",
       "      <th>Is</th>\n",
       "      <th>Ir</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year-month-day</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>2010-01-01</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-21</td>\n",
       "      <td>-11.0</td>\n",
       "      <td>1021.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>1.79</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2010-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-21</td>\n",
       "      <td>-12.0</td>\n",
       "      <td>1020.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>4.92</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2010-01-01</td>\n",
       "      <td>2</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-21</td>\n",
       "      <td>-11.0</td>\n",
       "      <td>1019.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>6.71</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2010-01-01</td>\n",
       "      <td>3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-21</td>\n",
       "      <td>-14.0</td>\n",
       "      <td>1019.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>9.84</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2010-01-01</td>\n",
       "      <td>4</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-20</td>\n",
       "      <td>-12.0</td>\n",
       "      <td>1018.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>12.97</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2014-12-31</td>\n",
       "      <td>19</td>\n",
       "      <td>8.0</td>\n",
       "      <td>-23</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>231.97</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2014-12-31</td>\n",
       "      <td>20</td>\n",
       "      <td>10.0</td>\n",
       "      <td>-22</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>237.78</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2014-12-31</td>\n",
       "      <td>21</td>\n",
       "      <td>10.0</td>\n",
       "      <td>-22</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>242.70</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2014-12-31</td>\n",
       "      <td>22</td>\n",
       "      <td>8.0</td>\n",
       "      <td>-22</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>246.72</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2014-12-31</td>\n",
       "      <td>23</td>\n",
       "      <td>12.0</td>\n",
       "      <td>-21</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>249.85</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>43824 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                hour  pm2.5  DEWP  TEMP    PRES cbwd     Iws  Is  Ir\n",
       "year-month-day                                                      \n",
       "2010-01-01         0    NaN   -21 -11.0  1021.0   NW    1.79   0   0\n",
       "2010-01-01         1    NaN   -21 -12.0  1020.0   NW    4.92   0   0\n",
       "2010-01-01         2    NaN   -21 -11.0  1019.0   NW    6.71   0   0\n",
       "2010-01-01         3    NaN   -21 -14.0  1019.0   NW    9.84   0   0\n",
       "2010-01-01         4    NaN   -20 -12.0  1018.0   NW   12.97   0   0\n",
       "...              ...    ...   ...   ...     ...  ...     ...  ..  ..\n",
       "2014-12-31        19    8.0   -23  -2.0  1034.0   NW  231.97   0   0\n",
       "2014-12-31        20   10.0   -22  -3.0  1034.0   NW  237.78   0   0\n",
       "2014-12-31        21   10.0   -22  -3.0  1034.0   NW  242.70   0   0\n",
       "2014-12-31        22    8.0   -22  -4.0  1034.0   NW  246.72   0   0\n",
       "2014-12-31        23   12.0   -21  -3.0  1034.0   NW  249.85   0   0\n",
       "\n",
       "[43824 rows x 9 columns]"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_ = data.dropna(axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>hour</th>\n",
       "      <th>pm2.5</th>\n",
       "      <th>DEWP</th>\n",
       "      <th>TEMP</th>\n",
       "      <th>PRES</th>\n",
       "      <th>cbwd</th>\n",
       "      <th>Iws</th>\n",
       "      <th>Is</th>\n",
       "      <th>Ir</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year-month-day</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>2010-01-02</td>\n",
       "      <td>0</td>\n",
       "      <td>129.0</td>\n",
       "      <td>-16</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>1020.0</td>\n",
       "      <td>SE</td>\n",
       "      <td>1.79</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2010-01-02</td>\n",
       "      <td>1</td>\n",
       "      <td>148.0</td>\n",
       "      <td>-15</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>1020.0</td>\n",
       "      <td>SE</td>\n",
       "      <td>2.68</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2010-01-02</td>\n",
       "      <td>2</td>\n",
       "      <td>159.0</td>\n",
       "      <td>-11</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>1021.0</td>\n",
       "      <td>SE</td>\n",
       "      <td>3.57</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2010-01-02</td>\n",
       "      <td>3</td>\n",
       "      <td>181.0</td>\n",
       "      <td>-7</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>1022.0</td>\n",
       "      <td>SE</td>\n",
       "      <td>5.36</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2010-01-02</td>\n",
       "      <td>4</td>\n",
       "      <td>138.0</td>\n",
       "      <td>-7</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>1022.0</td>\n",
       "      <td>SE</td>\n",
       "      <td>6.25</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2014-12-31</td>\n",
       "      <td>19</td>\n",
       "      <td>8.0</td>\n",
       "      <td>-23</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>231.97</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2014-12-31</td>\n",
       "      <td>20</td>\n",
       "      <td>10.0</td>\n",
       "      <td>-22</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>237.78</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2014-12-31</td>\n",
       "      <td>21</td>\n",
       "      <td>10.0</td>\n",
       "      <td>-22</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>242.70</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2014-12-31</td>\n",
       "      <td>22</td>\n",
       "      <td>8.0</td>\n",
       "      <td>-22</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>246.72</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2014-12-31</td>\n",
       "      <td>23</td>\n",
       "      <td>12.0</td>\n",
       "      <td>-21</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>1034.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>249.85</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>41757 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                hour  pm2.5  DEWP  TEMP    PRES cbwd     Iws  Is  Ir\n",
       "year-month-day                                                      \n",
       "2010-01-02         0  129.0   -16  -4.0  1020.0   SE    1.79   0   0\n",
       "2010-01-02         1  148.0   -15  -4.0  1020.0   SE    2.68   0   0\n",
       "2010-01-02         2  159.0   -11  -5.0  1021.0   SE    3.57   0   0\n",
       "2010-01-02         3  181.0    -7  -5.0  1022.0   SE    5.36   1   0\n",
       "2010-01-02         4  138.0    -7  -5.0  1022.0   SE    6.25   2   0\n",
       "...              ...    ...   ...   ...     ...  ...     ...  ..  ..\n",
       "2014-12-31        19    8.0   -23  -2.0  1034.0   NW  231.97   0   0\n",
       "2014-12-31        20   10.0   -22  -3.0  1034.0   NW  237.78   0   0\n",
       "2014-12-31        21   10.0   -22  -3.0  1034.0   NW  242.70   0   0\n",
       "2014-12-31        22    8.0   -22  -4.0  1034.0   NW  246.72   0   0\n",
       "2014-12-31        23   12.0   -21  -3.0  1034.0   NW  249.85   0   0\n",
       "\n",
       "[41757 rows x 9 columns]"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f179fe6c908>"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEECAYAAADEVORYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO2dd5wV9dX/34eOgmIhFlTWFo3RRA1R89hbYskT9YkxeVIsj8YUYzTlieT5JWo0UTT2xBALKPaYBsgqqAhKE1iqdBZYelnaArssbDm/P2buMnu5/c69M/fOeb9e97VTvjPz2SlnvnO+53u+oqoYhmEY0aBD0AIMwzCM4mFG3zAMI0KY0TcMw4gQZvQNwzAihBl9wzCMCNEpaAGpOPjgg7WioiJoGYZhGCXFtGnTNqpq70TrQm30KyoqqKqqClqGYRhGSSEiy5OtM/eOYRhGhDCjbxiGESHM6BuGYUSItEZfRAaLyAYRmeNZdqCIvCcii92/B7jLRUSeEpFqEZktIqd7trnBLb9YRG4ozL9jGIZhpCKTmv6LwGVxy/oDo1X1eGC0Ow9wOXC8+7sVGAjOSwK4BzgTOAO4J/aiMAzDMIpHWqOvqh8Bm+MWXwUMcaeHAFd7lr+kDh8DvUTkMOArwHuqullVtwDvsfeLxDAMwygwufr0D1HVte70OuAQd7oPsNJTbpW7LNnyvRCRW0WkSkSqamtrc5RnRIWltTt4+5O16QsahgH40JCrTm5m3/Izq+qzqtpPVfv17p2wb4FhtHHRox/y41enBy3DMEqGXI3+etdtg/t3g7t8NXCkp9wR7rJkyw3DMIwikqvRHw7EInBuAIZ5ll/vRvGcBdS5bqBRwJdF5AC3AffL7rKcue+teVT0r8xnF4ZhGJEjbRoGEXkduAA4WERW4UThDADeFJGbgeXAdW7xt4ErgGqgAbgJQFU3i8j9wFS33H2qGt84nBWDJyzLZ3PDMIxIktboq+p/J1l1cYKyCtyWZD+DgcFZqTMMwzB8xXrkGoZhRAgz+oZhGBHCjL5hGEaEMKNvGIYRIczoG4ZhRAgz+oZhGBHCjL5hGEaEMKNvGIYRIczoG4ZhRAgz+oZhGBHCjL5hGEaEMKNvGIYRIczoG4ZhRAgz+oZhGBHCjL5hlDiPjFpIRf9K6nY2BS3FKAHM6BtGifPuvHUArKtrDFiJUQqY0TcMw4gQZvQNwzAihBl9wzCMCGFG3zAMI0KY0TcMw4gQZvQNwzAihBl9wzCMCGFG3zAMI0KY0TcMw4gQZvQNwzAihBl9wzCMCJGX0ReRn4nIXBGZIyKvi0g3ETlaRCaLSLWI/E1Eurhlu7rz1e76Cj/+AcMwDCNzcjb6ItIH+CnQT1VPBjoC3wIeAh5X1eOALcDN7iY3A1vc5Y+75QzDyBPLrmlkQ77unU5AdxHpBOwDrAUuAv7hrh8CXO1OX+XO466/WEQkz+MbRuRZv20XADWb6gNWYpQCORt9VV0NPAKswDH2dcA0YKuqNrvFVgF93Ok+wEp322a3/EHx+xWRW0WkSkSqamtrc5VnGJGjYXdz+kJG5MnHvXMATu39aOBwYF/gsnwFqeqzqtpPVfv17t07390ZRmRoaQ1agVEK5OPeuQRYpqq1qtoE/As4G+jlunsAjgBWu9OrgSMB3PX7A5vyOH5STvztOzz+3qJC7NowQktrqwYtwSgB8jH6K4CzRGQf1zd/MTAPGANc65a5ARjmTg9353HXf6CqBblLG5taeXL04kLs2jBCS0thHiejzMjHpz8Zp0F2OvCJu69ngbuAn4tINY7PfpC7ySDgIHf5z4H+eeg2DCOOZqvpGxnQKX2R5KjqPcA9cYuXAmckKNsIfCOf4xmGkRxz7xiZYD1yDaNMaDGjb2SAGX3DKBNazadvZIAZfcMoE6ymb2SCGX3DKBMsesfIBDP6hlEmtLSY0TfSY0bfMMoEq+kbmWBG3zDKBAvZNDLBjL5hlAlW0zcywYy+YZQJVtE3MsGMvmEYRoQwo28YhhEhys7or9zcELQEwzCM0FJ2Rv+Zj5YELcEwDCO0lJ3RNwzDMJJjRt8wDCNCmNE3DMOIEGb0DcMoK4bNXM0zH1rbXjLyGjnLMAwjbNzxxkwAfnD+sQErCSdW0zcMw4gQZvQNwzAihBl9wzDKntZWZfD4ZTTsbg5aSuCY0TcMo+wZNXcd942Yx8MjFwYtJXDM6BuGUfbU724BYNvOpoCVBI8ZfcMwyh6NjTUgweoIA2b0DcMoe2JDDYhZfTP6hmFEgFhF32y+Gf0wM3bhButZaBg+oK7V72BGPz+jLyK9ROQfIrJAROaLyJdE5EAReU9EFrt/D3DLiog8JSLVIjJbRE73518oX258YSoPvrMgaBmGUfK0trn0zernW9N/EhipqicCnwfmA/2B0ap6PDDanQe4HDje/d0KDMzz2IZheJizui5oCaFFzb3TRs5GX0T2B84DBgGo6m5V3QpcBQxxiw0BrnanrwJeUoePgV4icljOyg3DaMe4xRv5eOmmoGWEkph7x4x+fjX9o4Fa4AURmSEiz4vIvsAhqrrWLbMOOMSd7gOs9Gy/yl3WDhG5VUSqRKSqtrY2D3nRYt6abVT0r2Temm1BSzECZNWWnUFLCCV7avpm9fMx+p2A04GBqnoaUM8eVw4A6gTHaoJtk6Kqz6pqP1Xt17t37zzkRYtRc9e1+2tEk7Z4dKMdsfNiJj8/o78KWKWqk935f+C8BNbH3Dbu3w3u+tXAkZ7tj3CXGYbhE2byE9MWp5/G6u9qbqF6w46C6wmSnI2+qq4DVorICe6ii4F5wHDgBnfZDcAwd3o4cL0bxXMWUOdxAxmGYRSM2AfQloYmBryzgJbWxK/H/3lxKpc89iHbG8s3XUO+g6jcDrwqIl2ApcBNOC+SN0XkZmA5cJ1b9m3gCqAaaHDLGkD9rmaWb2rgpMP3S7i+samFbp07FlmVUZJYVT8hMfdO5Wynnnn6Ub348mcP3avc4vVOLb9hdws9u3UunsAikpfRV9WZQL8Eqy5OUFaB2/I5XrlyxVPjWL6pgZoBVyZcX7+r2Yy+kRFqVj8h8RX7xubWYISEAOuRGwKWb2pIub5rGRn8ppZWKvpXcvewOXnvyxot98ZOSWLiT8ubU1cmLBcFzOgbRaV+lzOIxbCZa/Le11Ojq/PeR7lhNj8x8RWE8dUbA1ISPGb0jZJlxebUX0hRxGr6RjrM6BtGGZGJT3/jjl2sjNgL016Ge8g3escwjBCRiXHr9/v3AZIGDpQjrWb127CafhH4+sCJVPSvDFpGWVHRv5J/Tl8VtIyS4L1567l24MSgZQSKmfw9mNEvAtOWbyn4MWau3ApAw+7mgh/LCC/bG5u57ImP2nU++v5LVVQt38KMFYW/D8NKfEX/0pMOSVwwApjRDymtSXoMJuPDRU5yuufGLSuEnEC46NGxXPrYh0HLKCkefXchC9Zt55/T9v4KuuYv0a3tx7d1fDZJR8hSoaVVufnFqUyt2Zz1tmb0Q0pzlka/HFlaW8/iMs+D4jex+2Z3S+LOR143Y7YVi1Km3Fz6m3bsYvSCDfzolelZb2tGP6RYw5ORDx8s2EBF/8qULp1kL4ZypNw68nVwx33MxU6Y0S8izVk8ZFbTN/IhZuyL0Z5UCpSZzaejmy40WeK4VJjRLyKb6ndnXDaXi2kYMSoO3jdoCaGi3J6mtpq+Gf3yIepGf+fulqAllD0dIjSKVLm5S12bT0s5u3eW1EarQS/qRn/2qq1BSyh7OkTH5rOurjFoCb4SG/YxFzdwSRj9weOXcfGjHzK5zAZ9nrhkI0uTvMyibvQNIxVjFm6gbmfmA528UaZZNXNx75REGoaF67YDsGxjPWcec1DAavzj289NTroul882w4gCjU0t3PTCVD59SA/e/dn5QcsJlLJ275QD2fipW1qibfQ7dYyQ78HIiiY3Cm7N1vQumzELN7BqS2knl6voX8mdb8xIuC6XuqEZ/SLyxPuLMi4b9Zr+Ift1C1qCkQGXPzmOa/4yIWgZSbnphamc89CYtOVGzV3HtOXZ924tFkN9GH8ihhn9IrIrzRBtA8cuaZtuaQ1Px5lbhkxl7pq6guy7flczFf0rqbaetyXJ/LXbmLEi2Eb32u278o72+sHL0/j6wEk+KQo3ZvQLwJtTV1LRv7LtMzRTxi2ubZsOS+esuoYm3p+/gZtemOrvft1GuHfnrQPgzx8sTlp2045dvh7bKC+++If3+czdI4OW4SvDZq6mKoe8OplgRr8A/GmMY8DWxvkc35mzLuV2E5fsiU4Ki3cn5mbK9gWWjB27ss8CWrOp3pdjh5FtjU00NlmfBKM9d7wxk2v/WpgvDzP6IWPojNVBSygoForans/d+y6XPzku6frpK7ZQ0b+SMQs3FFFVaWD30t7Ubt+VduyOkjD6DRGqCd35t5lBSygo+fQCXbWlgX6/f7/sskMu25j8Syb2iT8xwgN5J2NnhOxCpkxckv4+KQmj/9Ysp+U66hEt5cbO3S0sWLs94/L3vTWPjTt2MXZRdGq905dbz+SoUeiMoCXROStGudXwokgHT9//216bzgcLMjfgsfwpEcoIzMi5qduBjPIjm8SMuVASNX2jfPA6d7Ix+EZubMsiVUGp0BTxjov5krfRF5GOIjJDREa480eLyGQRqRaRv4lIF3d5V3e+2l1fke+xjeScPeADLnp0bNAy9iIXl/6c1dv8F1ImbE5SK1y52emF+tQH1cWUUxT8dn+E2YMQGwbVT/yo6d8BzPfMPwQ8rqrHAVuAm93lNwNb3OWPu+WMArF6606W1oYv1FHI3uo3+JRmeXtjE9sby6vmm2wM4e2N2YfGhglVZf224mTGDHNb4Q2Dp+y1bP22Rv7jwdE57zMvoy8iRwBXAs+78wJcBPzDLTIEuNqdvsqdx11/sUiEEnobGaOq7brO+5UL/ZR73+UL97/vy778wI8aa6H9v8VixootzFm9p9f3X8Yu4cwHRrNiU2nnzSkE94+Yx7Y8Xur51vSfAH4FxJrWDgK2qmpM0SqgjzvdB1gJ4K6vc8tnjPnyosGWhva1cT8/58M0Lqzdz3u45i8T+eqfxrfNvztvPQAb66PXG7trp9RmOd/+CTkbfRH5KrBBVaflpWDv/d4qIlUiUlVb296f1RyifDTGHr9xoQmRnfaVchvNyU927nbqjft22RNgeNMLU9J2PCoHOqYZ3Sa+d/yOXc1tbTvp8ntBfjX9s4GviUgN8AaOW+dJoJeIxK7UEUCsi+lq4EgAd/3+wF6joqjqs6raT1X79e7du926Zz9alrPYq56ewC1DqnLe3mjPnNV1nPvwGJ4ek3lD4e/emsvKDNLcxt/yZhyjR/0upx3nK0981FazHbPQ/0bNUuT9+e2j3k6+ZxSn3/8eAJWz16bdPmejr6q/VtUjVLUC+Bbwgap+BxgDXOsWuwEY5k4Pd+dx13+gWX63b8wj8daslVt5f/76nLcvNmE3dLF8OPPWZBZZs7l+Ny9MqOH6QXs3THl5ftxSPo4bIS2b22RL/e52vuFyZMP2RgaPz70CVAp48xFtSuHiSRa9FFXO+3TvtGUKEad/F/BzEanG8dkPcpcPAg5yl/8c6F+AY5cNb2YwvNtzHy2lon9l0aIc8iH2SZqq6/ymHbv4feV8fvTq9HbLs3FhXvOXCe18w+XId56bzH0j5lHXUF6RSF4yveSlcO8Xk0wqSL70yFXVscBYd3opcEaCMo3AN/w4npf12xrZ3dzKkQfu4/euA2X+uvTpCWKdm5aUSS76xiT+yGxC6moiEO0Ra+je1WK5Z3Jldwa+71Kk0D79UHDmA6M59+HEI+OUcqNPuhb8KBF2V5dfVPSv5JyHPghaRqDEaqp+uG1SPf/l6hbKpH+GWZYcaW1Vbnt1OtOWb9lrXRRs1Lo657M63v9eCPw4n58tkUE2Vm3ZGbSEQFm0vjhfracd1asoxyk2mXQ+NKOfIxt37KLyk7X88JW9I1ZjRqqcu55NXuak/C1G56BY9EYsaqE5hxjOep969RqFpVPH4jw03buUVK7JjImEeycoYsMZdkoQUxv7RC200Z9UhFp2Ms4+1ulXd9yneviyv4+XJh8aLt69s6Q2s9rgxCUbswopLQXenLoyryi2sNOlY3YmadOO3Cod5Vofy2QUtpIz+mEZWi5W+0zUkSIWbZLPgCFhZx+3pnTakYk/kz9aVNuu52D3Lh1T7m9diiiMePdOpi+7bz83mT+OWphR2aDJJL4a4Ff/nF1gJcHSJYO2LG9j/QNvz09RMnqUZU3/2r9ODFoCsKemv2rLzr2yWaobcFbORn/DdsdIJ/ocH7twA9cPnsLAsXtq2fmci/hu55vrgwlV3LCtkQsfGVuQnsi3vTY9faEsKNVbLxPdu5r3VPzmr7MMrF4yGcu65Ix+dUjCE1s8KSHis1nuqekXR8sbGcT0+80j7y4CYHICt0zsk3tJllk+k13bePfOQft2yWq/fvGvGatZtrGelz9eXvRjPzduGQ+NXJBx+U4dSu7RTsqMFclHD4tC0ITflM+dUWSaU/QY2uPTL47VH+4OJ5mMkXPWUdG/kqk1yf3muZLoPMRq/6nOUSLeTuLiiN/NEQd0z2q/fhF0A/3AsUuCOXDAzI3r9e13Cq6wDTSzs8BBB2b0c6Q5RYbEfGv6X3DzaGTKSYftl3J9zNjPWun/eKuJGrJjtcyWLJ/OZPH4r09ZEYrUCjF98WMCbK7f3TaAeVjIt2/D6PnrufCRsf6IyZOeXdtH2uz2oVPa7a/PaAs3fitNpanY5Prlnml7Z1kZ/adGL+aVj1dkvd3cNXV8I8u2glTpTWMPXK5+7GzDILt2Du4yLt1Yv1fX71jjtjd18Mn3jEq7r1QfBv/3709yE5gh2xubWLWlgdrtu9JGx8S/58556AOu/eukAqrLnnwHnvnBy9NYtrE+p/BYv9l/n87t5v3qTTt+8UZf9uM36bJsJiPT93xZBas+9t6inLb74SvTWLl5J+vqGjl0/24Jy9z0whTGLKylZsCVNDa1pHyrbnW7yZdqY1q2DJlYw41nH902H6v9Z5v3O1XekEL6bqcs28x1z7Q32jUDrtyrXGxYvfjr6tfIXtmyTwFjzcPkKj9kv/bPZCYRKqVMtmGrMcZXZ/YSK6uafq60uDXSVDlevGldT/ztSL757Mdp95vL0IClSPygJ7n69DN1SfjdcB1v8JPxqFupePuTdRnvW1W5d/jcguR6Kcu7S+GeYXPaLfrdW3Pbzft1Lv88ppon31/sy75iTF+xhffn5ZfNN9cv9++/lFnq+JIz+o1Nwb7lY6GKYaLQDT9eXpywjLMeSD0+Z+4+/Zxl+U6qhu9lGzOPSnpnzjpenFjDH0dlHnkTJVS1XY6ct2avZcik9tFRS2vr+ce0VW3zqWr6sfQgmfL4+7l5B5LxX3+ZyC0ZGt9k5FrTz5SSM/p+sLl+NxX9K3l+3NKst90V8EsnEQsyyMjpF/e+NS9lRypI7NPPhLAlVrvvrXl57yMWGbJtZ2kPVF4o1sQZ6WSRNL/8+6y26VQ1/aEzVyddVypk0kEtH8re6De1tPLihPYDTizb6MSDv/1JZr0gvaRKAbC9sakgXwK7mlq46JGxgfRGnrgk+8auzq57Z8qyzVm1s/hp8/0cV7cQrKtr5MTf5pcE7pLHPvRJTWmR6sp2zqGWnK0bstAUOsNuJIx+LDlYjK8PzD3S4sYXpiZdd8q973LGH1K7PlQ1a5/koPHLWLqxnmc/Sv9lsl+3vRv3Yr7fXF5yP3ltRtoyneN65XqjD54anbnPNN+avve8xl9zL8f+39t5HccPsnERJWNtlq6MbMh38O1cyXfg+vh7MRMmJGgAPTONC7OQpOrf40fFL9RGv7lVE/qPvd2ww058l/3vv1TFp3/zTlYXL1YTmZljnH1H90GYvmJrzvHuWxqakhrwnt3ah9TlGnL2zpzMG0jjaW1VPv2bd9rmU4XLBmXQvHQLMMw2Fb/8+6x2/vNipxJZmmEyvWTkEklVSmPv7tiV2k24Zmv61NzhvPNc1tbtTOg/vilBbTuT4QWDID4vTyz/fjY3Z+xCxkbKyhZvB6qNO3bx9JhqrnhyXNb7Seaq6Rn3dRFE1FL8V0IPT4eeMMSax9Otc+oEdEHxj2mr2vnPB36YWS/gVp9epPmEv/5t6goGvFO4BvNrB04MdGCmW4ZUJewM6SWT8QhCbfSTOe8S5WgJa/bB+MbMfV1jlE3X73zdHvF5WP44aiHz1rbv2r5ycwMvTarJaf/7pMmgWQziR0LyNobVhaybPWTmt31tcvYdDf3mj6MWJk0w53WnzQ5Bj+m7/lnYDnxVCQZMKiajF+QXChoj3EY/CRu2l0Y+8WGz9o4kOHx/J29MOn/s/LX+ZQ9MVzsA+MZfJ3H3sLk5hn8GHzEeG2Alhl+NnIPGL6OifyU1PvjgvWTiAit0L+QWN1zye4Mmpyz3rSR9Uhp2RzMiKds0KWGjJI1+MWhsauEnr03PKwok0YDlsY5L6WrvG5MMDvH/cjAEHZM0bi1ev73Nhxpzow0av5T/eTF5Y3VYac4xC1e6sVInudFLi0OS3dVP5q91Qn3HpUlHsC3JEHxB9UQuJJlUKDNJk1KI6DFVGDoj/5BUM/pJeGjkAkbMXsvRv8490mN1Bo0q2fLq5BVZR354a/rem/rSxz/iokfb14gfeXdRzm0HQZLoBZsJO3OMhsj2oS6l4IN4tjc2U9G/krEL298XhUgxPW9NeeTH9/YXqOhf6VtbwOM+9CA2o5+AppbWnCNlvBQqSiTbsK2OHp9+pv/XS5NqGFZCHV1yPdU7GnNzUWR6bZvcckNnhiuTI2TfB+PGF6a2M15+pHruHOfmKsaYy8Vgx67CvOT9aJ+KhNFPFgo4fcVWfvTKNBrj4ubve2teu4Ebcg1zzLJDasHIxKcfz93D5nLHGzMLoCZceEf3SkWmeU3iqWtob8TW1u2kon8lw0PwEnh4ZPBDSebSmaoU+ENl/r25C0V5nvEseGfOunZ+3eaW1r0+W5/LIV0DpM49k83nfr5fDN5Gw0JEhDS3tnL10xNCM35xPKlGW8u1Bl6/u4WK/pXtYtoTsS3uS2L2KqcCMSLFmLjpYrELRbZ5a/ygQw4VkvtHhNegxsg2R5iqMmXZ5oIk5osnckY/nWF6MEGc77AMDENdw96fXamMdTaNYFvyHBM2l5p+Ntw7fB4zV27lJz6P85oNqfzLmWREzZbqDU4j6MuTalKWy8WAn3zPqEByvafKMuvlvTyzSL41aw3XDnTGryiH9OP/79+f8Mio/L6a/jV9Ndc9M4mRc3PvoJgpkTP66XJx1+YYDvoLT4eWGH759L926uF5bZ9LbSobYoOOvD9/A6u2+D9oeBhJlebBS65BHB8uCm9j+vdfqsrrq+7212cEHvOeKdcPnpK2EfbVySv485i93YT3Dp/L8k2ZBV3UuOV++vqMgn8x52z0ReRIERkjIvNEZK6I3OEuP1BE3hORxe7fA9zlIiJPiUi1iMwWkdP9+ifCwNaGvRug/DL6+3bNr/NTMbvST1qyqWjHCpJC+8N7dO2cvlCAbNjWvnJ09dMTePDt+VntY2QeaTeKxUeLck/R8OLEGu78W/btYs+PW5a+UB7kU9NvBn6hqicBZwG3ichJQH9gtKoeD4x25wEuB453f7cCA9MdwI844KW1/naqSUaimktYGnKN4tPaqmxIk4I6FQ1N4e74dN4fx+y17JkECQEHj1+W1Af/w1em+a4rbMQ3VH+0qJY/eXJYjVtcy5i4EOlPCty7OWejr6prVXW6O70dmA/0Aa4ChrjFhgBXu9NXAS+pw8dALxE5LNUx8s24B/DVP43Pex+5kqghd2IIa8J+N4y9PrV9Y3GQ+UqC4rH3FnHGA6NZvD63sQ6O6NXdZ0XBcN+IeQwaX9iaa5jxpihpamnl+sFT2kZgA/jeoCncVOTOkL749EWkAjgNmAwcoqqx0IR1wCHudB/AmxVtlbssVAyf5V8oXQjzfCXE74cyDDljisXCJEY9lsY6Z991ObRwlhGpxtGIkahy4zX63mEfVZVf/6uwaTaSkffIyiLSA/gncKeqbvPmglZVFZGsnBwiciuO+4cuhx6Xr7ys8Dt2OlXmwY155A+aWrM5cnlPCv3Jm4x0Df/JQvM2J2jjKXcKPcxfsTl7wAdt07mGUnbttMfor/e0gwyftYbXpwRTOcrL6ItIZxyD/6qq/stdvF5EDlPVta77JuawWg0c6dn8CHdZO1T1WeBZgK6HHV9Ur/hDI/1Ny5oqBO7ePIbiu3vY3PSFDF9Il5cmGVsThPCWO7l8nLSEuOHLjzQqyXrQbs+xJ7gf5BO9I8AgYL6qPuZZNRy4wZ2+ARjmWX69G8VzFlDncQOVJYft3y1oCQAsytGvXM789PUZRW9rOP+PY9o6AiZzCwVJR59cSvW7mveqxSZLzzy6BPM8ZcOWEH7x5VPTPxv4HvCJiMTikv4PGAC8KSI3A8uB69x1bwNXANVAA3BTHscuCQrdKSoTPl66KaNhFv0ilrkx7EzJMM7eT5ZvagjMj5sJnXIYatCL0t6v7f1fz314DDUDrtxrm18m6N8SBTKN3y8EORt9VR1P8kTqFycor8BtuR6vFLnx7KMDH4rN7zzw6Rg8oTQiNRKNyBZPUO0IQZFvJaUYKQSCIlmHqXQjhiVr83muwLH4qSivlpeQ4deo9vEDhBhGIYhiO0SmXD9oSsLlY9P0nN4ZwoCLyBn9ID+rcqUyRXIuozz57dA5RT/ma0WIJhm3uHQGIfeyPS6H0i/edNxS6cKyazbtacvIN2eRX0TO6JsBNYxgWLWloSQH6EnEUJ/HmihmhtrIGf1EXcULRbKxRQ0jipzz0JiCDSxU6hTTxx85o1/uqEYz7YFRGjSXidFvaVW++cykoGXkhBn9MiPe99g/xCGC5cjWht320o0ImabXDht5p2EwDMOhon8lP7mwuKlD/OLoX1fmnPs/G8otL1NzqSTY8mA1fcPwkVLppxBPMQx+OfKjV4MbLS5XzOgbho+Ui8/aKF/M6BuGj5Ti574RLczoG4aPWEXfCDtm9A3DMCKEGXzWeg0AABSASURBVH3DMIwIYUbfMAwjQpjRNwzDiBBm9A3DMCKEGX3DMIwIYUbfMAwjQpjRNwzDiBBm9A3DMCKEGX3DMIwIYUbfMAwjQpjRNwzDiBBm9A3DMCKEGf086dnNBh8zDKN0MKPv4RtfOCJoCWVBz67l+yI84ZCeQUswjLwwo++ha+f2p+Oa0/q0m3/hpi8y9pcXpNzH1ace7reskmDu777SNj3j7ksDVJIfXTulfiQWrt/OFysOKJIaIwhEglZQWIpu9EXkMhFZKCLVItK/2MdPxfmf/lS7+e5dOrZNVxy0Dxee8CkqDt63XZnTj2pvAP73shMLJzCk9OnVPa2xLBUyeeCf+NZphRdSIrz3s/Paprt1Lo97oHePrmVdeSvqVRKRjsDTwOXAScB/i8hJycqf0mf/nI5z0L5dst7mV5edwKUnHUL/y/cYbe/x77vq5ITbPXv9F9rN9+nVPe3XQKE4uc9+vu+zi8eYJ7oeNQOuZEL/i+jUcU+5Dj5Vlf7+wy/5sp9s6Nmtc9oyB+6T/f1VaL50zEE88c1TC7b/Y9zKzqUnHdJu+eG9urdNe6/7uccfzMLfX8bQ284umKZc2MdTkUvGYb2689h1pzL3d1+hZsCVPPT1U/I65o8vODav7f2m2K/mM4BqVV2qqruBN4CrUm3w9LdP58ITevPez85j0q8v4ntn9eWv3z29bf2gG/pRM+BKLvmMczP++8f/wdDbzubEQ3uy7MErWPyHy/n8kb147LrPJ9x/zYArqRlwJT++4DgAfnj+scy6+8v8+vIT+e8zjmor9/kje7XbpkfXTvz4gmPp2mnPTTT1/10CwIE9/DMKf7jmZP5wTfsXzgUn9G6bfu2WM9umR9x+blb7/sH5xwDw4k1fTFpm/K8u5NovHMGJh/bkr99zXnD3/udJPPmtUxl5Z+Ljdegg1Ay4Muk+7/5q+/f8recdw3fOPGqvcvFfUbGyADd8qW9GL9fxd13YNp2uJnrWMQfy/PXO/fSPJC+cHl070b1LR8457uC2l9IxcV9/sOdeKAQ1A67kc0fseQG/9ZNzeO37Z3LVqYdz+0XHcarnXs2V/zj2IH5w3jHs370zNQOu5K3bz6FPr+78+dunUTPgSr5YcQCXffZQ9u3aiX26dKRn104M+PrnAFj24BW8fPOZdO3UkVOP7LXXufyv0/vQqUPqikE29YajDtwHgCUPXAHAgUkqffdd9Vnm3XdZ2v2d0mc/OnQQ9nXbpr75xaO44+LjAVhw/97bP/Xfqb/8bjn3mHbz53+6d5KS2ZFrpRhVLdoPuBZ43jP/PeDPcWVuBaqAqqOOOkozpbW1VRev35ayzNb63TppyUZVVR02c7UOnbEq7X4Hj1+qfe8aoS0trUnLvDSpRscsWN9uWd+7Rmjfu0bo5KWbtO9dI/Sap8dr37tG6NzVdTpwbLVOXbZJVVWHTFym333+47Q64plYvVF/+vp0bW1NrKuxqVlVVf/8wWLte9cInb58s66v26mqql95/EMdMWtNu/LO+duetQ4vlz42VvveNaJtfuiMVXrlUx/p1U+P12nLN+vCddv04ZHztaWlVfveNUK/+cxE3d3c0m4fI+es1YsfHZvT8ZtbWnXErDVaOXtN2/+vqlpVs1k/WbVVVVUHjq3Wiv4j2m23YK2jKxEfLtygo+asbbueWxt2Z6xn+MzVOmXZJl1Wu0MrZ6/R+WvrdPnGelXdc3+8PKlG7x76if7sbzNUVXXeGqdMa2urNsWdm2yYu7pOV2yq1/pdTTpuUa1+vGSj9r1rhK7Y5Bx/R2OTrt7SoM0trTphca0+9M58Pf2+d/WBynn63EdLcj5uMup27taJ1RuTrn9/3jptam7Rxeu3a/WGPffh7uYWvfCPY/ThkfN17dadbeettbVVR81Zm/a46+qcbbbWt79uX7j/PZ281HkGHxm1QNdu3amtra16+2vTtWFXc6Jd7cXz45bqDYMnt80/+f4inbVyS7sysfs7pturaefuZv39iLlt67Y3NrVtt2DtNu1714i2+/blSTVt5bzP2PptO7WqZpO2tLTqu3PXaeVs57kGqjSJHRZnfXEQkWuBy1T1Fnf+e8CZqvqTROX79eunVVVVRdNnGMVic/1uunXuwD5dyjfSyQgOEZmmqv0SrSv2HbcaONIzf4S7zDAiRTIXhGEUmmL79KcCx4vI0SLSBfgWMLzIGgzDMCJLUWv6qtosIj8BRgEdgcGqOreYGgzDMKJM0R2Kqvo28Haxj2sYhmFYj1zDMIxIYUbfMAwjQpjRNwzDiBBFjdPPFhGpBZYHLONgYGPAGiAcOsKgAUxH2DRAOHSEQQOEQ0dfVU3Y9TfURj8MiEhVsk4OUdMRBg2mI3wawqIjDBrCpCMZ5t4xDMOIEGb0DcMwIoQZ/fQ8G7QAlzDoCIMGMB1ewqABwqEjDBogPDoSYj59wzCMCGE1fcMwjAhhRt8wDCNCmNE3DMOIEGb0ARH5moiEayDLgBCRb4vI591pfwa7LVHCdC5EJNBnNUzPiJ2L/Ii00ReRS0RkEjAIOCxAHVeLyP1BHd/VcImIjAOeAE4D0ABa+e1ctNPxNRH5ebGPG6chLM+InQufiNxYbW6NbV/gdaAn8BvgTqAvMF5EOqhqa5F0dABuAvoDfUXkXVUdV+hjx2noBgwBPgX8Hmeg+n3c9R1VtaVIOuxc7NHSCfgF8CPgKBH5QFVnFvl6BP6MuFrsXPhM5Gr67njCO4BXVPUCVR2NM6jLVe76olxAV0cLUI1Tm/wxUNQarqthJ/Cqey5GARNxBqynWEbOzsVeWpqBhcCJwM+BZ4qpISzPiHssOxc+ExmjLyI/FZEBIvINAFX9m7u8A7AFWCkiXYuk4zkRucVd9KGqblfV54B9ReRmj65Ca/g+gKoOc5d3BJYBc0XkyFT78FmHnYs99+d17qJKVW1U1SeAT4nIt91ynYugIQzPiJ2LQqGqZf0DBPgZMAG4FpgP3Aj09pT5D2BBEbTcCHwMXAZ8CPwaONaz/nJgLnBAETX8H3CMZ/0pOGMZ97RzUfhzkeL+/JSnzDXA6gA0FPUZsXNRnF/Z1/TVuUoXAr9R1X/gXNDP4zzosTITgVUi8rUCy7kYeEhVR+L4KbsB3/HoeAfnJrtVRHrGahkF1tAF+K5HwydAI86g9YXEzgVJ78/PAV/xlPk3sEhEfglOg2IRNBT9GbFzURzK2uh73AJVwLkA7gO+CPisiJzoltsPWAA0FVjHDOCrro4qYBLQR0TO9hS/C3gQWAwcWgQNH7saznHLCY7PslshwhTtXCTUEX9/Lsa5P0/wFP8R8LCIrAP6FEFDUM9I5M9FoSkro+/6YdtiqnVPI0s10FNETnHnPwT2B3q45bYBRwCH+Kil7dx6dEwAOojIee78HGAtcLi7zXHAX4ChwOmq+qciaViDG4Lm1nQ+BdS703kRbyyDOBdZaijkueiYREey+7Onu92pwHPAP3HOxZAiaijIMyIi+3v1BHQustVQMHtRTMrC6IvI2SIyBPiNiBwYe0A9DT1TgGbgyyLSSVXn4dQQvAMdfEtVX8xTxxki8lNo36rvMb6LcfzU33RDzlbh3DgV7vo64Ceq+l+quqaIGg71aAD4paoOzuX4cTqeA+4Skd6e5TGjU6xzka2GQpyLfiLyMnC3eDr1iBOOCOnvz03Aj1X1G3mci3w1QJ7PiIh0EJH9RGQE8BTsicLxXJOCngufNIAP9iIoSt7oi8gxODXCMTixs/eLyBUAqtrk/q3G+WQ7FicOHGAXUBPbj6o25qnjTuDfOC+ey91l8TWI7cA4oCvwiPtSOgDnRkZVa1V1cZAa3LK789DQUUQexEkvOwE4HbhHRA5x9x0LtSvYufBLg1s2n3PRQUT+jBNmOBrnC+JeEekuTnx3s3uMZPfncnf9Srd9IQgNNbF95fuMuPfgdpy2kz4i8k1XY6fYNSnkufBBQ41nP3mdi0DJtMU3rD/gOuANd/pA4PvAQOAwd9nvcXrQVeDE+g4HpuE8BB181PGfODHmX8cJPYxf/zvg766Gw4AXcXzIzwAdy0hDZ5w4+0+7831wHqCKYukIgwbPcb4O9HKnjwdeArp41t9f6PszDBo8x/oM8Kp7rw7HExlVLB1h0BDkL3ABOVyws2IPsztfAYwHjnLnTwIG4LS6nwO8BhznKd8j9gD4rEOAjjhRKG8DP3WXd8AJ/XuN9iGJHcgzFDAMGuJ1uMePGZiu7t+hQD93+nOFPhdBaUh0TTzLLwG2Au8Bj7j36XmFuD/DoCHBNYmN3dEZeAH4LPAkcDvOF3pBntUwaAjbL3ABWVy8XkAlzqfZb4Ae7vJDcYz8L9z5jji9KO8B9vds71etKV7HvvH7xwkFnAUcnGD7vHWEQUOqaxJXpqer4/AinYuia0hzTWKGph9whTt9H/AAbkWlCPdF0TSk0uGu+xLwpDt9K1ALvOW9boU8F8XUENZfKfn098UJn7vdnY5FXNTifJafIiJnquOXWw2cp6p14Pg11b/u0gl1xO1/rKvpdvf4Z7h/xScdYdCQSMe5CcqcAcxV1TUi0kNEjvdZRxg0JNIRuybq/q1S1bfdsm/jGODNrg6/7s8waEiqw2UFTmTM34BfAdOBanVSHRT8XBRZQygJtdEXketF5HwR2U9VV+M0zL2J02HmDBHp4xr5STgx14+JSA+cz7blIrIP5J8fI42OM0UkFmYYCxVtwWlLuEtE6oDTXQOTc9hfGDRkqSMWFXIATpf1m3B6t57q6ivGuSiYhmx0JOALOKGhsYbDnO/PMGjIUscBQG9gHU770w+BE0TkM/nqCIOGUiB0Y+S6RutQHN9aK7AE5019h6pudMucjdOAW6WqL3u2fQwnfrYvcL2qLiySjqmq+oq7rANwDI7PcDdwp+YeeRG4hnx0uMtfxulpOwR4XFVnl6qGfHSI06HnTByXyjocd+SiUtWQg462Z1VEDvas74HTqLy5VDWUGqGq6YsTK604PtjVqnoxTu+7zXhGmFfVCTjhUyeIyP4i0tNd9b/Azap6Zp4GP1sdJ7o69nFrCduAu1X14jwMfuAa8tCxn/sggeNXvU5Vb8rD4AeuIQ8d+4tIN3U69Cjwe1X9zzwMfuAactQRe1b3VdWN4oTVdlDVHXkY/MA1lCQagoYFnMbXB4CHgPNxQqmGeNZ3wKmZnO9Z1gNnkIspwHoSNNIFpOOIUtfgg46pro7DSl2Djzryuj/DoMHH+zPIc+GbvSjVX+A1fRE5HycO9gCc7s/34+S0uFDcxkd1aq73ur8YV+LEYs8CTtEceyoWQMeqUtbgk46Zro61pazBZx05359h0OCTjryf1TBoKHmCfuvgRFt8zzP/F5xPtBuBaZ4396E4jTIV7rKrcCJ0ykZHGDSERUcYNIRFRxg0hEVHGDSU+i94Ac5wdF1xe0HiNLg96E7PBG53p/sBr5ezjjBoCIuOMGgIi44waAiLjjBoKPVf4O4dVW1Q1V26Jx/KpTix9+CMmfoZcZIjvY4TT7tX1sRy0REGDWHREQYNYdERBg1h0REGDaVOaAZGFycxmOJkWhzuLt6OM5rRycAydWJvUfdVXq46wqAhLDrCoCEsOsKgISw6wqChVAm8pu+hFScnxkbgc+7b+rdAq6qOj13AiOgIg4aw6AiDhrDoCIOGsOgIg4bSJGj/kveHkxypFSeB2s1R1hEGDWHREQYNYdERBg1h0REGDaX4C1WPXBE5AidZ2mOquivKOsKgISw6wqAhLDrCoCEsOsKgoRQJldE3DMMwCkuYfPqGYRhGgTGjbxiGESHM6BuGYUQIM/qGYRgRwoy+YRhGhDCjbxgFQEQqROTbnvkbReTPOexnrIj081edEWXM6BuRwu2+XwwqgG+nK2QYxcaMvhFaROQ+EbnTM/8HEblDRP5XRKaKyGwR+Z1n/VARmSYic0XkVs/yHSLyqIjMAr4Ud4wLRORDERkmIktFZICIfEdEpojIJyJyrFuuQkQ+cI85WkSOcpe/KCJPichEd/tr3V0PAM4VkZki8jN32eEiMlJEFovIw0n+5+4i8oaIzBeRfwPdPesGikiV+//9zl12kYgM9ZS51N3OMBITdJdg+9kv2Q+ntjzdne6AM/7pN3GGwhN32QjcPOnAge7f7sAc4CB3XnGGS0x0jAuArcBhOCl7VwO/c9fdATzhTr8F3OBO/w8w1J1+Efi7q+UkoNqz3xGe49wILAX2B7oBy4EjE+j5OTDYnf4c0Az0i/v/OgJj3fUCLAB6u+teA/4z6Gtnv/D+rKZvhBZVrQE2ichpwJeBGcAXPdPTgROB491NfurW5j8GjvQsbwH+meJQU1V1rTpd+ZcA77rLP8F58YDzhfCaO/0ycI5n+6Gq2qqq83CyPiZjtKrWqWojMA/om6DMecAr7v8/G/CO6XudiEzH+d8/C5ykqurq+a6I9HJ1vpNCgxFxQpNa2TCS8DxOLflQYDBwMc6gGc94C4nIBcAlwJdUtUFExuLUqAEa1c2/LiJnArFt78YZQN6bt6XVM99KZs+Id/tUudu95VqATiJyDXCPu+yWZBuKyNHAL4EvquoWEXmRPf/fCzhfIo3A31W1OQPNRkSxmr4Rdv4NXIZTwx/l/v5HRHoAiEgfEfkUjttki2vwT8TJwLgXqjpZVU91f8MTlUnCROBb7vR3gHFpym8Heqbbqar+26OnCvgItwFYRE7GceEA7AfUA3UicghwuWcfa4A1wG9wXgCGkRSr6RuhRlV3i8gYYKtbW39XRD4DTHIHRNoBfBcYCfxQROYDC3FcPH5yO/CCiPwvzkhNN6UpPxtocd1NLwJbMjzOQPc484H5OIOAo6qzRGQGjv9+JTAhbrtXcfz68zM8jhFRLMumEWpEpAOO7/4bqro4aD1hxe0DMENVBwWtxQg35t4xQouInARU4zSAmsFPgohMw3EDvRK0FiP8WE3fMAwjQlhN3zAMI0KY0TcMw4gQZvQNwzAihBl9wzCMCGFG3zAMI0L8f5bpI7wdvmBLAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data_['pm2.5'].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f179f4eb0b8>"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data_['pm2.5'].plot()\n",
    "data_['DEWP'].plot()\n",
    "data_['TEMP'].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2010    104.045730\n",
       "2011     99.071340\n",
       "2012     90.545871\n",
       "2013    101.712376\n",
       "2014     97.734557\n",
       "Name: pm2.5, dtype: float64"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 2010-2014 雾霾平均浓度\n",
    "year_of_mean_pm2_5_ = data_['pm2.5'].groupby(lambda x: x.year).mean()\n",
    "year_of_mean_pm2_5_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2010-2014北京雾霾平均浓度图 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd_ = pd.period_range('2010', '2014', freq=\"A\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['2010', '2011', '2012', '2013', '2014'], dtype='period[A-DEC]', freq='A-DEC')"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "year_of_mean_pm2_5_.index = pd_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "year_of_mean_pm2_5_.index.name = 'Year'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Year\n",
       "2010    104.045730\n",
       "2011     99.071340\n",
       "2012     90.545871\n",
       "2013    101.712376\n",
       "2014     97.734557\n",
       "Freq: A-DEC, Name: pm2.5, dtype: float64"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "year_of_mean_pm2_5_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f179e954e48>"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "year_of_mean_pm2_5_.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
